import { PageOptions } from '@graphcommerce/framer-next-pages' import { StoreConfigDocument, PageMeta } from '@graphcommerce/magento-store' import { AppShellTitle, GetStaticProps, MetaRobots, SheetShellHeader, Title, } from '@graphcommerce/next-ui' import { Typography, Box } from '@material-ui/core' import { GetStaticPaths } from 'next' import React from 'react' import SheetShell, { SheetShellProps } from '../../components/AppShell/SheetShell' import { DefaultPageDocument, DefaultPageQuery } from '../../components/GraphQL/DefaultPage.gql' import PageContent from '../../components/PageContent' import apolloClient from '../../lib/apolloClient' export const config = { unstable_JsPreload: false } type Props = DefaultPageQuery type RouteProps = { url: string[] } type GetPageStaticPaths = GetStaticPaths type GetPageStaticProps = GetStaticProps function ModalPage(props: Props) { const { pages } = props const page = pages?.[0] if (!pages?.[0]) return
const metaRobots = page?.metaRobots.toLowerCase().split('_').flat(1) as MetaRobots[] return ( <> {page.title} {page.title} {page.metaDescription ?? ''} ) } ModalPage.pageOptions = { SharedComponent: SheetShell, overlayGroup: 'modal', } as PageOptions export default ModalPage // eslint-disable-next-line @typescript-eslint/require-await export const getStaticPaths: GetPageStaticPaths = async ({ locales = [] }) => { if (process.env.NODE_ENV === 'development') return { paths: [], fallback: 'blocking' } const urls = [['modal']] const paths = locales.map((locale) => urls.map((url) => ({ params: { url }, locale }))).flat(1) return { paths, fallback: 'blocking' } } export const getStaticProps: GetPageStaticProps = async ({ locale, params }) => { const urlKey = params?.url.join('/') ?? '??' const client = apolloClient(locale, true) const staticClient = apolloClient(locale) const conf = client.query({ query: StoreConfigDocument }) const page = staticClient.query({ query: DefaultPageDocument, variables: { url: `modal/${urlKey}`, rootCategory: (await conf).data.storeConfig?.root_category_uid ?? '', }, }) if (!(await page).data.pages?.[0]) return { notFound: true } return { props: { ...(await page).data, apolloState: await conf.then(() => client.cache.extract()), variant: 'bottom', size: 'max', }, revalidate: 60 * 20, } }